Raminy.dev is now publicly available, allowing you to create your personal website quickly and easily. Follow these steps to get started:
If you don’t have a Notion account, open a browser and navigate to https://www.notion.so/signup. Create your account using one of the available options.
Sign into your Notion account and go to Notion Integrations. Click on the New Integration
button. You will see the screen shown in the image below:
Choose a name for your integration in the Add integration name
input. Then select a workspace from the Associated workspace
drop-down menu. Ensure the selected option for Type
is Internal
. You can upload a logo if you like and then save it.
After you click on the Save
button, Notion will provide you with a secret
. You will need this secret later on, which we will refer to as the Notion API Secret.
To run the website, you will need to create two databases
on Notion. You can do this using a magic tool from raminy.dev.
Navigate to https://www.raminy.dev/notion-integration/initialize-website and click on the LOGIN WITH NOTION
button. Grant access to only one page. The tool will create two databases under a page named:
You now need to save the page IDs for use in the next steps.
In your Notion account, click on the newly created database that will contain your pages, then copy the ID
. An example of it is highlighted in the image below. We will refer to this as the Notion Database ID, which you will need in the next steps.
Then click on the newly created database with a (people)
suffix. It is an empty table or list (you can choose your preferred view).
You should add only one item to the table or list. After creating a new item, hold ctrl
or command
on Mac OS and click on the open
button to open the page in a new tab.
Then copy the ID. An example is highlighted in the image below. We call this the Notion My Page ID, and you will need it in the next steps.
Important: Each page in your database contains a Published
checkbox. The page will be shown on your website only if this checkbox is ticked. Additionally, the description you write at the top of your database will be displayed on your website’s homepage as your summary.
To add a new article to your website, you just need to add a new entry in the database and them open link and start writing with Notion’s editor.
Go to each of the two databases created in your Notion account. Click on the three dots at the top right corner of the page. Then, from the menu, under Connect to
, select the integration you created earlier. My integration name is Raminy.dev
, but you may have chosen a different name for yours.
Repeat this process for both databases created by the magic tool.
Before we begin, I just want to mention that you don’t have to deploy to Railway. There are, of course, multiple options like Vercel, Render, Fly.io, Heroku, Google Cloud, AWS, and many more. I've reviewed these options, and based on my review, one or more of the following may be true about them:
By the way, if you decide to go with Railway, you can use my referral code ejaSGz
or my referral link https://railway.app?referralCode=ejaSGz to sign up.
Let’s continue!
If you don’t have a Railway account, navigate to https://railway.app and sign up, choosing the most basic plan.
Railway isn’t free, but its basic plan is affordable and likely sufficient for hosting a website.
Disclaimer: Creating a Railway account is your own responsibility, and raminy.dev is not liable for any potential costs.
After creating your account, go to the dashboard
and click on the New Project
button. In the input field, type “empty” and select the Empty project
option.
On the next screen, click on Add a Service
and then select Docker Image
.
Paste raminyavari/personal-website:latest
into the input field and press Enter
or Return
on Mac OS.
After completing this step, you will see something like this on the screen. Railway assigns a random name to your service; in this example, it is prolific-emotion
, but it will be different for you.
You will need this name for the next steps when setting environment variables. We’ll refer to it as the Service Name.
Now, you need to add a list of environment variables. Click on the service, then go to the Variables
tab and select RAW Editor
. You can also add them one by one by clicking on the New Variable
button, but it's easier to paste all of them at once in the RAW Editor.
In the RAW Editor, stay on the ENV
tab, paste the code below into the editor, and replace the values with your own. I’ll explain where to find each value.
Copy and paste the values below, then follow the instructions to edit them.
FULL_NAME=YOUR_FULL_NAME
META_TAGS=YOUR_META_TAGS_FOR_SEO
APP_TITLE=YOUR_APP_TITLE
BASE_URL=https://domain.com
NOTION_API_SECRET=YOUR_NOTION_API_SECRET
NOTION_DATABASE_ID=YOUR_NOTION_DATABASE_ID
NOTION_MY_PAGE_ID=YOUR_NOTION_MY_PAGE_ID
GOOGLE_ANALYTICS_ID=YOUR_GOOGLE_ANALYTICS_ID
FULL_NAME: Replace YOUR_FULL_NAME
with your name.
META_TAGS: This is crucial for your website’s search engine optimisation (SEO
). Replace YOUR_META_TAGS_FOR_SEO
with a comma-separated list of values with no spaces.
e.g. software-development,engineering,personal-website
APP_TITLE: Replace YOUR_APP_TITLE
with the title of your website. This can simply be your name.
BASE_URL: You have two options here: use the URL assigned by Railway to your app or use your own domain.
If you choose Railway’s URL, your base URL will be https://SERVICE_NAME-production.up.railway.app
. Replace SERVICE_NAME
with the Service Name you obtained in previous steps.
If you prefer to use your own domain, enter your domain here. You’ll need to configure the service to use your domain later.
NOTION_API_SECRET: Replace YOUR_NOTION_API_SECRET
with the Notion API Secret you received when you created your Notion integration.
NOTION_DATABASE_ID: Replace YOUR_NOTION_DATABASE_ID
with the Notion Database ID you obtained after using the magic tool to initialise your website.
NOTION_MY_PAGE_ID: Replace YOUR_NOTION_MY_PAGE_ID
with the Notion My Page ID you received after using the magic tool to initialise your website.
GOOGLE_ANALYTICS_ID: If you want to setup Google Analytics on your website and you already have an ID, replace YOUR_GOOGLE_ANALYTICS_ID
with your ID.
Now, everything is ready to deploy the service. Click the Deploy
button you see on the screen.
The deployment will take a few minutes to complete. Once it’s finished, you’ll see a message indicating Deployment Successful with a green tick.
To enable web browsing, go to the Settings
tab, and under Networking
, activate your Public Network
. If you want to use your own domain, you can configure it here.
You can always find a list of available versions here. If you have followed the instructions, you have already installed the latest version, and the :latest
suffix at the end of the Docker image URL points to the latest version.
To upgrade to the latest version, simply go to the service on Railway
and redeploy
it. This action will fetch the latest version from Docker Hub.
Important: Changes to Environment Variables
will not take effect until you redeploy the service.
You can access your sitemap at your-domain/sitemap/0.xml
. Add this sitemap to Google Search Console to help index your website.
Your website is now ready to browse.
Let’s stay in touch on LinkedIn. Feel free to share any suggestions for improving the website.
To stay up-to-date with the latest version of the Docker
image, please always check this section before deploying a new version. This ensures your databases
in Notion
are synchronised with the new version.
As of 01 August 2024
, the databases on Notion
should have the following properties. Please note that Property Names are Case-Sensitive.
Disclaimer: Page
and Article
refer to the same thing and may be used interchangeably.
The properties are:
Icon
. You can select an emoji
or upload an image
. This is not a property; every Notion page has it.
The properties are:
full name
here.
LinkedIn
URL, which is optional.
title
, which can be your position, e.g., Lead Full-Stack Developer
.
square
and not larger than 500KB
.
square
and not larger than 100KB
. Even if it is larger, the app will reduce its size.
Icons
. It should be only one file and is used only for Apple devices. If you upload more than one, they will be ignored by the app.